package pe.edu.sistemas.sisdiho.services;

import java.util.Iterator;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import pe.edu.sistemas.sisdiho.entities.Aula;
import pe.edu.sistemas.sisdiho.entities.Periodo;
import pe.edu.sistemas.sisdiho.entities.RegistroHorario;
import pe.edu.sistemas.sisdiho.repositories.AulaRepository;
import pe.edu.sistemas.sisdiho.repositories.PeriodoRepository;
import pe.edu.sistemas.sisdiho.repositories.RegistroHorariosRepository;

@Service
@Transactional
public class AsignacionAulasService {
	
	@Autowired
	private RecuperacionService recuperacionServ;
	
	@Autowired	
	private RegistroHorariosRepository horarioRepository;
	
	@Autowired
	private PeriodoRepository periodoRepository;
	
	@Autowired
	private AulaRepository aulaRepository;
	
	
	public List<RegistroHorario> obtenerHorarios(){
		Periodo p = periodoRepository.obtenerUltimoPeriodo();
		List<RegistroHorario> horarioAux=horarioRepository.obtenerHorariosAulas(p.getNombre());
		Iterator<RegistroHorario> iterador=horarioAux.iterator();
		while(iterador.hasNext()){
				RegistroHorario rh=(RegistroHorario)iterador.next();
				rh.setNombreDia(recuperacionServ.obtenerDia(rh.getDia()));
				String auxistr = rh.getEscuela();
				auxistr = auxistr.substring(21);
				rh.setEscuela(auxistr);
			}
		return horarioAux;
	}
	public List<Aula> obtenerListaAulas(){
		return aulaRepository.obtenerListaAulas();
		
	}
	public void actualizarAulas(int idAula , RegistroHorario rhs){
		horarioRepository.actualizarAula(idAula , rhs);
	}
	
	public List<RegistroHorario> obtenerHorariosLaboratorios()
	{
		Periodo p = periodoRepository.obtenerUltimoPeriodo();
		horarioRepository.obtenerHorariosLaborarotorios(p.getNombre());
		List<RegistroHorario> regLab = horarioRepository.obtenerHorariosLaborarotorios(p.getNombre());
		Iterator iterador=regLab.iterator();
		while(iterador.hasNext()){
				RegistroHorario rh=(RegistroHorario)iterador.next();
				rh.setNombreDia(recuperacionServ.obtenerDia(rh.getDia()));
				String auxistr = rh.getEscuela();
				auxistr = auxistr.substring(21);
				rh.setEscuela(auxistr);
				String aula = rh.getAula();
				if(aula.equals("NO ASIGNADO"))
				{
					rh.setAula("--");
				}
				String tipo = rh.getTipo();
				if(tipo.equals("LABORATORIO"))
				{
					rh.setTipo("LABO");
				}
			}
		return regLab;
	}
	public List<Aula> obtenerListaLaboratorios()
	{
		return aulaRepository.obtenerListaLaboratorios();
	}
	public List<RegistroHorario> obtenerCruce(int idAulaSelected,RegistroHorario horarioSelected){
		Periodo p = periodoRepository.obtenerUltimoPeriodo();
		List<RegistroHorario> horarioCruceAux=horarioRepository.obtenerCruce(idAulaSelected,horarioSelected,p.getNombre());
		Iterator iterador=horarioCruceAux.iterator();
		while(iterador.hasNext()){
				RegistroHorario rh=(RegistroHorario)iterador.next();
				rh.setNombreDia(recuperacionServ.obtenerDia(rh.getDia()));
			}
		return horarioCruceAux;
		
	}
	public Aula obtenerListaMagna()
	{
		return aulaRepository.obtenerListaMagna();
	}

}

